package com.itheima.chapter01.datatype;

public class Test3 {
    public static void main(String[] args) {
        byte a =3;
        byte b=4;
        // byte c =a+b;
        /*
         * 错误原因：隐式转换
         * byte c =a+b;
         * 这里a,b两个byte类型，他们在运算之前会将自己先提升为int类型，然后再进行计算
         * 两个int 相加结果还是int，想要把一个int类型的结果，赋值给byte类型的变量（大给小，需强转）
         *
         * 解决方案：
         * 先让a,b相加，使用（）提升优先级，在对相加结果整体进行强转
         * byte c = (byte)(a+b);
         * */
        byte c = (byte)(a+b);
        System.out.println(c);


        byte d=5+6;
        System.out.println(d);
        /*
         * 担心问题：
         *  byte e.txt=5+6;
         * 5,6是两个常量，整数常量默认的数据类型是int
         * 两个int相加结果为int，int给byte赋值emmmm应该需要强转
         * Java存在常量优化机制：编译时会让3，4进行相加，然后会自动判断结果是否在byte的取值范围
         * 在范围内--编译通过
         * 不在范围内--编译出错
         * */
    }

}
